function validateDate(oSrc,args)
{
	args.IsValid=CheckDate(args.Value);
}

function CheckDate(date)
{
	var strSeparator = "-"; //日期分隔符
	var strDateArray;
	var intYear;
	var intMonth;
	var intDay;
	var boolLeapYear;
	var strDate="";
	var strTime="";

	var index1=date.indexOf(" ");
	if(index1>0)//如果包括时间部分
	{
		strDate=date.substring(0,index1);
		strTime=date.substring(index1+1,date.length);
		
		var index2 = strTime.indexOf(":");
		if(index2>0)
		{
			var hour =strTime.substring(0,index2);
			var minute = strTime.substring(index2+1,strTime.length);
			if(minute.toString().length!=2 || !IsNumber(hour) || !IsNumber(minute))
			{
				return false;
			}
			if(parseInt(hour)>24 || parseInt(minute)>=60)
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	else
	{
		strDate=date;
	}
	
	strDateArray = strDate.split(strSeparator);
	
	if(strDateArray.length!=3)
	{
		return false;
	}
	
	if(!IsNumber(strDateArray[0]) || !IsNumber(strDateArray[1]) || !IsNumber(strDateArray[2]))
	{
		return false;
	}
	
	intYear = parseInt(strDateArray[0],10);
	intMonth = parseInt(strDateArray[1],10);
	intDay = parseInt(strDateArray[2],10);
	
	if(intYear.toString().length!=4 || intYear<=1900)
	{
		return false;
	}
	
	if(intMonth>12||intMonth<1)
	{
		return false;
	}
	if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1))
	{
		return false;
	}
	if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1))
	{
		return false;
	} 
	if(intMonth==2)
	{
		if(intDay<1)
		{
			return false;
		} 
		boolLeapYear = false;
		if((intYear%100)==0)
		{
			if((intYear%400)==0) boolLeapYear = true;
		}
		else
		{
			if((intYear%4)==0) boolLeapYear = true;
		}

		if(boolLeapYear)
		{
			if(intDay>29)
			{
				return false;
			} 
		}
		else
		{
			if(intDay>28)
			{
				return false;
			} 
		}
	}
	return true;
} 

function IsNumber(number)
{
	var flag = true;
	var length = number.toString().length;
	if(length>0)
	{
		for(var i=0;i<length;i++)
		{
			var tmp=parseInt(number.substring(i,i+1));
			if(isNaN(tmp))
			{
				flag=false;
				break;
			}
		}
	}
	else
	{
		flag=false;
	}
	
	return flag;
}
